﻿using System;
using System.Linq;
using System.Collections.Generic;
using SIM.Geo.DA;
using SIM.Geo.BE;
using System.Transactions;

namespace SIM.Geo.BL
{
    public class BLGrado
    {
        /// <summary>
        /// Convertidor a Grados
        /// </summary>
        /// <param name="grados"></param>
        /// <param name="minutos"></param>
        /// <param name="segundos"></param>
        /// <returns></returns>
        public Grado ConvertirAGrados(Grado grado)
        {
            Grado gradoConvert = new Grado();

            double grados = grado.Grados;
            double minutos = grado.Minutos;
            double segundos = grado.Segundos;

            gradoConvert.Grados = grado.Grados;
            gradoConvert.Minutos = grado.Minutos;
            gradoConvert.Segundos = grado.Segundos;

            if (grados >= 0)
            {
                gradoConvert.Angulo = grados + (minutos / 60) + (segundos / 3600);
            }
            else
            {
                gradoConvert.Angulo = grados - (minutos / 60) - (segundos / 3600);
            }
            gradoConvert.ValorDecimal = (gradoConvert.Grados * 360) + (gradoConvert.Minutos * 60) + gradoConvert.Minutos;
            return gradoConvert;
        }

        /// <summary>
        /// Convertidor a Horas
        /// </summary>
        /// <param name="grados"></param>
        /// <param name="minutos"></param>
        /// <param name="segundos"></param>
        /// <returns></returns>
        public Grado ConvertirAHoras(double angulo)
        {
            Grado gra = new Grado();
            gra.Angulo = 0;

            if (angulo == 0) return gra;

            gra.Grados = Math.Truncate(angulo);
            gra.Angulo = (Math.Abs(angulo - Math.Truncate(angulo)) * 60);

            gra.Minutos = Math.Truncate(gra.Angulo);
            gra.Angulo = Math.Abs((gra.Angulo - Math.Truncate(gra.Angulo)) * 60);

            gra.Segundos = Convert.ToInt32(gra.Angulo);

            //gra.Segundos = (int)angulo;
            if (gra.Segundos >= 59.99)
            {
                gra.Minutos = gra.Minutos + 1;
                gra.Segundos = 0;
            }

            return gra;
        }

    }
}
